'use strict';

var defaultData = require('./data');

// options 使用参数
// pageCtx 页面 page 上下文
function Dialog(options, pageCtx) {
    var parsedOptions = Object.assign({}, defaultData, options);

    var ctx = pageCtx;
    if (!ctx) {
        var pages = getCurrentPages();
        ctx = pages[pages.length - 1];
    }
    var dialogCtx = ctx.selectComponent(parsedOptions.selector);

    if (!dialogCtx) {
        console.error('无法找到对应的dialog组件，请于页面中注册并在 wxml 中声明 dialog 自定义组件');
        return Promise.reject({ type: 'component error' });
    }

    // 处理默认按钮的展示
    // 纵向排布确认按钮在上方
    var _parsedOptions$button = parsedOptions.buttons,
        buttons = _parsedOptions$button === undefined ? [] : _parsedOptions$button;

    var showCustomBtns = false;
    if (buttons.length === 0) {
        if (parsedOptions.showConfirmButton) {
            buttons.push({
                type: 'confirm',
                text: parsedOptions.confirmButtonText,
                color: parsedOptions.confirmButtonColor
            });
        }

        if (parsedOptions.showCancelButton) {
            var cancelButton = {
                type: 'cancel',
                text: parsedOptions.cancelButtonText,
                color: parsedOptions.cancelButtonColor
            };
            if (parsedOptions.buttonsShowVertical) {
                buttons.push(cancelButton);
            } else {
                buttons.unshift(cancelButton);
            }
        }
    } else {
        showCustomBtns = true;
    }

    return new Promise(function(resolve, reject) {
        dialogCtx.setData(Object.assign({}, parsedOptions, {
            buttons: buttons,
            showCustomBtns: showCustomBtns,
            key: '' + new Date().getTime(),
            show: true,
            promiseFunc: { resolve: resolve, reject: reject }
        }));
    });
}

module.exports = Dialog;